#!/usr/bin/python
# -*- coding: utf-8 -*-
"""SoftInfo spider template urls
"""

from google.appengine.ext import db

from contact.models import Model
from contact.common import json

class SpiderTemplate(Model):
    """通用模板设置"""
    name = db.StringProperty('模板名称')
    start_url = db.LinkProperty('开始url')
    settings = db.TextProperty('模板设置，使用json格式保存')
    status = db.IntegerProperty('状态: 0:运行中，1:空闲, 2:卡死')
    last_updated = db.DateTimeProperty('最后抓取时间')
    total = db.IntegerProperty('爬取总数', default=0)
    success = db.IntegerProperty('成功爬取数', default=0)

class SoftInfo(Model):
    """软件信息"""
    url = db.LinkProperty("url")
    parent_url = db.LinkProperty("parent_url")
    name = db.StringProperty("软件名称")
    info = db.TextProperty('软件信息，使用json格式保存')
    status = db.IntegerProperty("链接状态，如404，500，302等等")
    filemd5 = db.StringProperty("filemd5")
    last_modified = db.DateTimeProperty('最后更新的时间戳')
    
    def load_info(self):
        return json.loads(self.info)
    
    def download_infos(self):
        query = SoftDownUrl.all()
        infos = query.filter('parent_url =', self.url).fetch(20)
        return [i.to_dict() for i in infos]

class SoftDownUrl(Model):
    """软件信息"""
    downurl = db.LinkProperty("url")
    realurl = db.LinkProperty("realurl")
    referer = db.LinkProperty("referer")
    parent_url = db.LinkProperty("parent_url")
    status = db.IntegerProperty("链接状态，如404，500，302等等")
    filemd5 = db.StringProperty("filemd5，最后一次下载匹配的md5")
    filesize = db.IntegerProperty("filesize，最后一次下载匹配的文件大小")
    softtype = db.CategoryProperty('软件类型, 0:普通样本, 1:防误报样本')
    last_modified = db.DateTimeProperty('最后更新的时间戳')
    anti_navigate = db.BooleanProperty('是否防盗链', default=False)